'http://forum.valhallalegends.com/phpbbs/index.php?topic=11497.0
'http://forum.valhallalegends.com/index.php?topic=13890.0

Declare Sub GamePacketSize Lib "D2GS.dll" (ByVal Data$, ByRef Size&, ByRef OffSet&)
Declare Function GamePacketDecode& Lib "D2GS.dll" (ByVal InData$, ByVal InSize&, ByVal OutData$, ByVal OutMax&, ByRef OutSize&)
Declare Function GamePacketEncode& Lib "D2GS.dll" (ByVal InData$, ByVal InSize&, ByVal OutData$)
Declare Function GamePacketHeader& Lib "D2GS.dll" (ByVal Size&, ByVal Out$)



Public Sub MakePacketHeader(Data As String)
    Dim tmpData$, tmpHdl&, InSize&
    tmpData = String(2, 0)
    InSize = Len(Data)
    intHdl = GamePacketHeader(InSize, tmpData)
    Data = Left(tmpData, intHdl) & Data
End Sub

Public Sub EncodePacket(Data As String)
    Dim OutData$, tmpData$, InSize&, tmpLng&
    OutData = String(1024, 0)
    tmpData = Data
    InSize = Len(tmpData)
    tmpLng = GamePacketEncode(tmpData, InSize, OutData)
    'add header from this function
    Data = Left(OutData, tmpLng)
End Sub

Public Function GetPacketSize(Data As String) As Long
    Dim tmpData$, RetSize&, OffSet&
    tmpData = Data
    Call GamePacketSize(tmpData, RetSize, OffSet)
    Data = Mid(Data, 1 + OffSet)'Remove Lengh header
    GetPacketSize = RetSize
End Function

Public Function DecodePacket(Data As String, ByVal pSize As Long, OutData As String) As Long
    Dim SizeReturn&, OutBuf$, tmpData$
    OutBuf = String(pSize * 3 + 250, 0)
    tmpData = Left(Data, pSize)
    DecodePacket = GamePacketDecode(tmpData, Len(tmpData), OutBuf, Len(OutBuf), SizeReturn)
    OutData = Left(OutBuf, SizeReturn)
End Function